package cms.api;

import cms.model.Banner;
import cms.model.Organization;
import store.model.core.Store;

import java.awt.print.Pageable;
import java.util.List;

/**
 * Created by Roney on 2016/10/10.
 * banner api
 */
public interface BannerApi {

    /**
     * 分頁查詢banner
     * @param pageable
     * @return
     */
    public List<Banner> getBannerList(Pageable pageable);

    /**
     * 根據用戶ID和banner類型以及是否刪除，分頁查詢
     * @param userId
     * @param type
     * @param isDelete
     * @param pageable
     * @return
     */
    public List<Banner>  getBannerListByParams(String userId,Integer type,Boolean isDelete,Pageable pageable);

    /**
     * 获取商城首页的所有banner并按照序号排序
     * @return
     */
    public List<Banner> getAllBannerAtMall();

    /**
     * 获取某机构的banner并按照序号排序
     * @return
     */
    public List<Banner> getBannerByOrganization(Organization organization);

    /**
     * 将banner标记为删除
     * @param id 需要删除的banner的Id
     */
    public void deleteBanner(String id);

    /**
     * 通过Banner的id找banner
     * @param id id
     * @return
     */
    public Banner findBannerById(String id);

    /**
     * 通过banner的name找商城首页的banner
     * @param bannerName banner名称
     * @return
     */
    public Banner findBannerByNameAtMall(String bannerName);

    /**
     * 通过banner的name找店铺的banner
     * @param bannerName banner名称
     * @return
     */
    public Banner findBannerByNameAtStore(String bannerName, String storeId);

    /**
     * 通过banner的name找积分商城首页的banner
     * @param bannerName banner名称
     * @return
     */
    public Banner findBannerByNameAtScoreMall(String bannerName);

    /**
     * 通过banner的showIndex找商城首页的banner
     * @param showIndex banner的showIndex
     * @return
     */
    public Banner findBannerByShowIndexAtMall(int showIndex);

    /**
     * 通过banner的showIndex找店铺的banner
     * @param showIndex banner的showIndex
     * @return
     */
    public Banner findBannerByShowIndexAtStore(int showIndex,String storeId);

    /**
     * 通过banner的showIndex找积分商城首页的banner
     * @param showIndex banner的showIndex
     * @return
     */
    public Banner findBannerByShowIndexAtScoreMall(int showIndex);

    /**
     * 保存banner
     * @param banner 需要保存的banner
     */
    public void saveBanner(Banner banner);

    /**
     * 根据类型查询banner
     * @param type
     * @param storeId
     * @param orgCode 机构代码
     * @return
     */
    public List<Banner> findBannerListByType(Integer type,String storeId,String orgCode);

    public String toString();

    /**
     * 根据Store找到该集采店铺的所有Banner
     * @param orgCode 机构代码
     */
    public List<Banner> findBannerListByStore(Store store,String orgCode);
}
